import WxRequest from "./request"
import env from "./env"
import { getStorage, clearStorage } from "./storage"
import { modal, toast } from "./extendApi"

const instance = new WxRequest({
  // baseURL: 'https://gmall-prod.atguigu.cn/mall-api',
  baseURL: env.baseURL,
  timeout: 15000,
  useLoading: false
})

// 配置请求、响应拦截器
instance.interceptors.request = (config) => {
  const token = getStorage("token")

  if (token) {
    config.header.token = token
  }

  // 做点什么
  return config
}

instance.interceptors.response = async (response) => {
  const { isSuccess, data } = response

  if(!isSuccess) {
    wx.showToast({
      title: '网络异常情重试',
      icon: 'error'
    })
  }

  // 根据接口返回的业务码，细分返回值。
  switch (data.errcode) {
    case 200:
      // 成功
      return data
    case 208:
      // 没有 token 或 token 失效，要求用户登录或重新登录。
      const ok = await modal({
        content: '鉴权失败，请重新登录',
        showCancel: false
      })
      if (ok) {
        clearStorage()
        wx.navigateTo({
          url: '/pages/login/login'
        })
      }
      return Promise.reject(response)
    default:
      toast({
        title: '程序出现异常，请联系客服或稍后重试'
      })
      return Promise.reject(response)
  }

  // 做点什么
  return data
}

export default instance
